package day14;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*本类用于测试List的迭代*/
public class TestList2 {
    public static void main(String[] args) {
        //1.创建List接口对象
        List<String> list = new ArrayList<String>();
        //2.向集合中添加元素
        list.add("喜羊羊");
        list.add("美羊羊");
        list.add("沸羊羊");
        list.add("小肥羊");
        list.add("烤全羊");
        //3.测试集合的迭代
        /*集合的迭代方式:
        * 1.for循环
        * 2.增强for循环/高效for循环/foreach循环
        * 3.iterator迭代器循环
        * */
        //方式一:因为List集合是有序的,元素是有下标的,所以可以根据下标进行遍历
        //从哪开始 到哪结束 怎么变化
        for( int i = 0 ;i < list.size() ;i++ ){
            //根据下标获取集合中对应位置上的元素
            System.out.println(list.get(i));
        }
        System.out.println("****方式一****");
        //1 2 : 3--3是要遍历的元素 2是遍历得到的元素的名字 1是遍历得到的元素的类型
        for(String s: list){
            System.out.println(s);
        }
        System.out.println("*****方式二*****");
        //方式三:通过集合对象的迭代器进行迭代
        /*1.获取指定集合的迭代器*/
        Iterator<String> it = list.iterator();
        /*由于我们不知道集合有多少元素,所以用while循环遍历集合所有元素*/
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("****方式三****");

        //方式四:listIterator()是List接口独有的
        //listIterator是Iterator的子接口,可以拥有父接口的方法,还拥有自己独有的方法(逆序遍历)
        Iterator<String> it2 = list.listIterator();
        while(it2.hasNext()){
            System.out.println(it2.next());
        }
        System.out.println("****方式四****");
    }
}
